package Pojo;

import java.util.List;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
/**Classe Professor 
 * Classe professor herda de Pessoa e faz relacionamentos com turma
 * 
 * @author Thiago de Sousa Silveira 
 *
 */
@Entity
public class Professor extends Pessoa implements Serializable{
	/** Código do Professor */
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	
	/** Departamento do Professor*/
	private String departamento;
	
	/** lista de Turmas*/
        @OneToMany(mappedBy="professor")
	private List<Turma> turmas;

        /**
         * Construtor exigido pelas anotations
         */
        public Professor() {
        }
	
        /**
	 * Construtor do Professor sem relacionamentos
	 * @param nome
	 * @param cpf
	 * @param departamento
	 */
	public Professor(int id,String nome, String cpf, String departamento){
                this.setId(id);
		this.setNome(nome);
		this.setCpf(cpf);
		this.setDepartamento(departamento);
	}
        
	/**
	 * Construtor do Professor sem relacionamentos sem id
	 * @param nome
	 * @param cpf
	 * @param departamento
	 */
	public Professor(String nome, String cpf, String departamento){
		this.setNome(nome);
		this.setCpf(cpf);
		this.setDepartamento(departamento);
	}
        
        /**
	 * Construtor do Professor com relacionamentos sem id
	 * @param nome
	 * @param cpf
	 * @param departamento
	 */
	public Professor(String nome, String cpf, String departamento, List<Turma> turmas){
		this.setNome(nome);
		this.setCpf(cpf);
		this.setDepartamento(departamento);
                this.setTurmas(turmas);
	}
		
	/**
	 * Sobrescrita do método toString
	 * @return String
	 */
	@Override
	public String toString(){
		return(this.getId()+"\t"+this.getNome()+"\t"+this.getCpf()+
                        "\t"+this.getDepartamento()+"\n");
	}
	
	/**
	 * Getter do id
	 * @return int
	 */
	public int getId(){
		return(this.id);
	}
	
	/**
	 * Setter do id
	 * @param id
	 */
	private void setId(int id){
		this.id = id;
	}
	
	/**
	 * Getter do Departamento
	 * @return String
	 */
	public String getDepartamento(){
		return(this.departamento);
	}
	
	/**
	 * Setter do Departamento
	 * @param departamento
	 */
	private void setDepartamento(String departamento){
		this.departamento = departamento;
	}
	
	/**
	 * Getter de Turmas
	 * @return List<Turma>
	 */
	public List<Turma> getTurmas(){
		return(this.turmas);
	}

        /**
         * Setters de Turmas
         * @param turmas 
         */
        private void setTurmas(List<Turma> turmas) {
            this.turmas = turmas;
        }
}
